1 添加编辑框(Rich Edit)
1.1 编辑框ID:IDC_textbox
1.2 编辑框关连的control变量:m_textblock
2 变量声明和定义
CString str;
int nStart, nEnd;
3 得到编辑框文本的方式
有8种访问对话框控件的方式,下面是对这些方式的一个总结:
GetDlgItem()->Get(Set)WindowText()
GetDlgItemText()/SetDlgItemText()
GetDlgItemInt()/SetDlgItemInt()
将控件和普通变量相关联,用UpdateData();交换数据
将控件和控件变量相关联
SendMessage()
SendDlgItemMessage()
GetSelText()
如:
3.1
GetDlgItem(IDC_textbox)->GetWindowText(str);
//GetDlgItem()返回的是一个CEdit *指针
3.2
m_textblock.GetSel(nStart, nEnd);
str = m_textblock.GetSelText();
4 文本插入
4.1 在编辑框全部文本的前后插入文本
4.1.1
m_textblock.SetSel(0, 0);
m_textblock.ReplaceSel("
");");m_textblock.SetSel(-1, -1);
m_textblock.ReplaceSel("
4.1.2
m_textblock.SetSel(0, -1);
str = m_textblock.GetSelText();
str = "
" + str + "";
GetDlgItem(IDC_textbox)->SetWindowText(str);
4.1.3
GetDlgItem(IDC_textbox)->GetWindowText(str);
str = "
" + str + "";
GetDlgItem(IDC_textbox)->SetWindowText(str);
4.2 在编辑框文本的中间插入文本(或换行)
str = "\n\r";
m_textblock.ReplaceSel(str);
5 文本替换
任务:如果编辑框没有选择文本,则在全部文本的前面加上
,在全部文本的后面加上。如果编辑框有选择文本,则在选择的文本前后操作。
m_textblock.GetSel(nStart, nEnd);
if(nStart == nEnd)
//如果nStart和nEnd相等,表明光标处于某个位置(直观来看就是光标在闪动);
{
m_textblock.SetSel(0, -1);
str = m_textblock.GetSelText();
str = "
" + str + "";
GetDlgItem(IDC_textbox)->SetWindowText(str);
}
else
{
str = m_textblock.GetSelText();
str = "
" + str + "";
m_textblock.ReplaceSel(str);
}
也可以利用CString类的Relace()方法做文本替换:
CString strtxt,strold,strnew;
GetDlgItem(IDC_textbox)->GetWindowText(strtxt);
GetDlgItem(IDC_title)->GetWindowText(strold);
GetDlgItem(IDC_new)->GetWindowText(strnew);
strtxt.Replace(strold,strnew);
GetDlgItem(IDC_textbox)->SetWindowText(strtxt);
6 编辑框内文本的全选、复制、剪切、粘贴、清空、回退操作
m_textblock.SetSel(0, -1);
m_textblock.Copy();
m_textblock.Cut();
m_textblock.Paste();
m_textblock.Clear();
CEdit* edit1 = (CEdit*)GetDlgItem(IDC_textbox);
edit1->SetWindowText("");
m_textblock.Undo();
m_textblock.SetFocus();
7 将光标停置于编辑框中默认文本的特定位置
如编辑框设置了如下默认文本:
hi,
Very happy to write to you.
Attached please find!
Any questions, please don't hesitate to let me know.
You're early reply will be highly appreciated.
Best Regards
Yours Sincerely
想让光标停靠在第三行空白处:
m_body.SetSel(45,45);
8 编辑框中文本的查找操作
CString blocks,finds;
int start,end,lengths,lengths2, num;
start =0, end = 0, lengths = 0, lengths2 = 0, num =0;
GetDlgItem(IDC_textbox)->GetWindowText(blocks);
GetDlgItem(IDC_title)->GetWindowText(finds);
lengths = finds.GetLength();
start = blocks.Find(finds);
while (start >= 0)
{
lengths2 = blocks.GetLength();
start = blocks.Find(finds);
//从第start +1开始,如是在第一个字符找到,则start = 0;
if((start+lengths) > (lengths2 - start+lengths))
{
break;
}
blocks = blocks.Mid(start+lengths, lengths2-start-lengths);
num++;
}
char str3[125];
itoa(num,str3,10);
CString textnum = str3;
textnum = "找到:"+ textnum + "个!";
GetDlgItem(IDC_new)->SetWindowText(textnum);
-End-
本页共115段,2887个字符,3744 Byte(字节)